Skip to content

fix: treat null classifier as empty string in OverlayManager - #627

Open
elharo wants to merge 2 commits into
apache:masterfrom
elharo:fix-621-null-classifier
Open

fix: treat null classifier as empty string in OverlayManager#627
elharo wants to merge 2 commits into
apache:masterfrom
elharo:fix-621-null-classifier

Conversation

@elharo

@elharo elharo commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #621

Objects.toString(x) converts null to the literal string "null", not "". This caused overlay-to-artifact matching to fail when one side had a null classifier and the other had an empty string, contradicting the documented MWAR-241 intent.

Includes TDD: wrote failing test (null-classifier overlay vs empty-classifier artifact throws InvalidOverlayConfigurationException), then applied the fix.

Objects.toString(x) converts null to the literal string "null",
rather than "". This caused overlay-to-artifact matching to fail
when one side had a null classifier and the other had an empty
string, contradicting the documented MWAR-241 intent.

Fixes apache#621
@elharo
elharo requested a review from dennisl July 4, 2026 14:39
@elharo elharo added the bug Something isn't working label Jul 24, 2026
@elharo
elharo requested review from Copilot, mosabua and vsiveton July 24, 2026 11:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes overlay-to-artifact matching in OverlayManager by ensuring null classifiers are treated the same as empty-string classifiers (per MWAR-241), preventing false mismatches caused by Objects.toString(null) producing the literal "null".

Changes:

  • Update classifier comparison logic to normalize null classifiers to "" for both overlay and artifact.
  • Add a regression test covering the null-vs-empty classifier matching scenario.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
src/main/java/org/apache/maven/plugins/war/overlay/OverlayManager.java Normalizes null classifier values to "" during overlay/artifact classifier comparison to avoid "null" literal mismatches.
src/test/java/org/apache/maven/plugins/war/overlay/OverlayManagerTest.java Adds a regression test to ensure a null-classifier overlay can match an empty-classifier WAR artifact.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +141 to +145
OverlayManager manager =
new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
assertNotNull(manager.getOverlays());
assertEquals(2, manager.getOverlays().size());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OverlayManager.compareOverlayWithArtifact() treats null classifier as literal "null" string

2 participants